package com.hey.snmp.utils;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * Created by Rox on 2014/7/15.
 */
public class NumberUtil {

    /**
     * ���������ַ����Ƿ���һ��������
     * @param str �û�������ַ���
     * @return �����������������true�����򷵻�false.
     */
    public static boolean isPositive(String str) {
        Pattern pattern = Pattern.compile("[0-9]+");
        Matcher matcher = pattern.matcher(str);

        return matcher.matches();
    }

    /**
     * ���������ַ����Ƿ���һ��������
     * @param str �û�������ַ���
     * @return �����������������true�����򷵻�false.
     */
    public static boolean isInteger(String str) {
        Pattern pattern = Pattern.compile("[-]?[0-9]+");
        Matcher matcher = pattern.matcher(str);

        return matcher.matches();
    }

    /**
     * ���������ַ����Ƿ���һ��float��,Ҳ�����Ǹ�����
     * @param str �û�������ַ���
     * @return �����������������true�����򷵻�false.
     */
    public static boolean isFloat(String str) {
        Pattern pattern = Pattern.compile("[-]?[0-9]*");
        Matcher matcher = pattern.matcher(str);

        if(matcher.matches()) {
            return true;
        }

        pattern = Pattern.compile("[-]?[0-9]+\\.[0-9]+");
        matcher = pattern.matcher(str);

        return matcher.matches();
    }
    
    /**
     * �ж�һ���ַ����ǲ���ʮ������
     * @param str
     * @return
     */
    public static boolean isHexNumber(String str){  
        boolean flag = false;  
        for(int i=0;i<str.length();i++){  
            char cc = str.charAt(i);  
            if(cc=='0'||cc=='1'||cc=='2'||cc=='3'||cc=='4'||cc=='5'||cc=='6'||cc=='7'||cc=='8'||cc=='9'||cc=='A'||cc=='B'||cc=='C'||  
                    cc=='D'||cc=='E'||cc=='F'||cc=='a'||cc=='b'||cc=='c'||cc=='c'||cc=='d'||cc=='e'||cc=='f'){  
                flag = true;  
            } else {
                return false;
            }
        }  
        return flag;  
    } 
    
    /**
     * �ַ���ת��Ϊ����
     * @param str
     * @return
     */
    public static int str2Int(String str){
    	int res = 0;
    	try{
    		res = Integer.parseInt(str);
    	}catch(Exception e){
    		e.printStackTrace();
    	}
    	return res;
    }
    /**
     * �ַ���ת��Ϊ����
     * @param str
     * @return
     */
    public static long str2Long(String str){
    	long res = 0;
    	try{
    		res = Long.parseLong(str);
    	}catch(Exception e){
    		e.printStackTrace();
    	}
    	return res;
    }
    /**
     * �ַ���ת��ΪDouble
     * @param str
     * @return
     */
    public static double str2Double(String str){
    	double res = 0.0;
    	try{
    		res = Double.parseDouble(str);
    	}catch(Exception e){
    		e.printStackTrace();
    	}
    	return res;
    }
    
    /**
     * 10����ת16����
     * @param str
     * @return
     */
    public static String str2Hex(String str){
    	int num = str2Int(str);
    	return int2Hex(num);
    }
    /**
     * 10����ת16����
     * @param num
     * @return
     */
    public static String int2Hex(int num){
    	return Integer.toHexString(num).toUpperCase();
    }
    /**
     * 10����ת16����
     * @param num
     * @return
     */
    public static String long2Hex(long num){
    	return Long.toHexString(num).toUpperCase();
    }
    /**
     * �ַ���ת��Ϊ����
     * @param str
     * @return
     */
    public static String hexStr2Str(String str){
    	int res = hexStr2Int(str);
    	return String.valueOf(res);
    }
    /**
     * �ַ���ת��Ϊ����
     * @param str
     * @return
     */
    public static int hexStr2Int(String str){
    	int res = 0;
    	try{
    		res = Integer.parseInt(str,16);
    	}catch(Exception e){
    		e.printStackTrace();
    	}
    	return res;
    }
    /**
     * �ַ���ת��Ϊ����
     * @param str
     * @return
     */
    public static long hexStr2Long(String str){
    	long res = 0;
    	try{
    		res = Long.parseLong(str,16);
    	}catch(Exception e){
    		e.printStackTrace();
    	}
    	return res;
    }
    public static void main(String[] args){
    	System.out.println(hexStr2Str("CD7EF1"));
    	System.out.println(hexStr2Int("CD7EF1"));
    	System.out.println(hexStr2Long("CD7EF1"));
    }
}
